home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Applications / Python 1.3.3 / Python 133 SRC / Mac / Lib / test / tae.py < prev    next >
Text File  |  1996-03-18  |  4KB  |  113 lines

  1. # The oldest AppleEvent test program.
  2. # Its function has been overtaken by echo.py and tell.py.
  3.  
  4. import AE
  5. from AppleEvents import *
  6. import Evt
  7. from Events import *
  8. import struct
  9. import aetools
  10. import macfs
  11. import sys
  12. import MacOS
  13.  
  14. MacOS.EnableAppswitch(0)
  15.  
  16. def aehandler(request, reply):
  17.     tosend = []
  18.     print 'request:', aetools.unpackevent(request)
  19.     param = request.AEGetParamDesc(keyDirectObject, typeWildCard)
  20.     if param.type == typeAEList:
  21.         n = param.AECountItems()
  22.         print 'List has', n, 'items'
  23.         for i in range(1, 1+n):
  24.             type, item = param.AEGetNthDesc(i, typeFSS)
  25.             data = item.data
  26.             print 'item', i, ':', type, item.type, len(data), 'bytes'
  27.             vol, dir, fnlen = struct.unpack('hlb', data[:7])
  28.             filename = data[7:7+fnlen]
  29.             print 'vol:', vol, '; dir:', dir, '; filename:', `filename`
  30.             print 'full path:', macfs.FSSpec((vol,dir,filename)).as_pathname()
  31.             tosend.append(item)
  32.     else:
  33.         pass
  34.         print 'param:', (param.type, param.data[:20]), param.data[20:] and '...'
  35.     if tosend:
  36.         passtothink(tosend)
  37.  
  38.  
  39. def passtothink(list):
  40.     target = AE.AECreateDesc(typeApplSignature, 'KAHL')
  41.     event = AE.AECreateAppleEvent(kCoreEventClass,
  42.                                   kAEOpenDocuments,
  43.                                   target,
  44.                                   kAutoGenerateReturnID,
  45.                                   kAnyTransactionID)
  46.     aetools.packevent(event, {keyDirectObject: list})
  47.     reply = event.AESend(kAENoReply | kAEAlwaysInteract | kAECanSwitchLayer,
  48.                          kAENormalPriority,
  49.                          kAEDefaultTimeout)
  50.     #print "Reply:", aetools.unpackevent(reply)
  51.     return
  52.     event = AE.AECreateAppleEvent(kCoreEventClass,
  53.                                   kAEOpenApplication,
  54.                                   target,
  55.                                   kAutoGenerateReturnID,
  56.                                   kAnyTransactionID)
  57.     reply = event.AESend(kAENoReply | kAEAlwaysInteract | kAECanSwitchLayer,
  58.                          kAENormalPriority,
  59.                          kAEDefaultTimeout)
  60.  
  61. def unihandler(req, rep):
  62.     print 'unihandler'
  63.     aehandler(req, rep)
  64.  
  65. quit = 0
  66. def quithandler(req, rep):
  67.     global quit
  68.     quit = 1
  69.  
  70. def corehandler(req, rep):
  71.     print 'core event!'
  72.     parameters, attributes = aetools.unpackevent(req)
  73.     print "event class =", attributes['evcl']
  74.     print "event id =", attributes['evid']
  75.     print 'parameters:', parameters
  76.     # echo the arguments, to see how Script Editor formats them
  77.     aetools.packevent(rep, parameters)
  78.  
  79. def wildhandler(req, rep):
  80.     print 'wildcard event!'
  81.     parameters, attributes = aetools.unpackevent(req)
  82.     print "event class =", attributes['evcl']
  83.     print "event id =", attributes['evid']
  84.     print 'parameters:', parameters
  85.  
  86. AE.AEInstallEventHandler(typeAppleEvent, kAEOpenApplication, aehandler)
  87. AE.AEInstallEventHandler(typeAppleEvent, kAEOpenDocuments, aehandler)
  88. AE.AEInstallEventHandler(typeAppleEvent, kAEPrintDocuments, aehandler)
  89. AE.AEInstallEventHandler(typeAppleEvent, kAEQuitApplication, quithandler)
  90. AE.AEInstallEventHandler(typeAppleEvent, typeWildCard, unihandler)
  91. AE.AEInstallEventHandler('core', typeWildCard, corehandler)
  92. #AE.AEInstallEventHandler(typeWildCard, typeWildCard, wildhandler)
  93.  
  94.  
  95. def main():
  96.     global quit
  97.     quit = 0
  98.     while not quit:
  99.         ok, e = Evt.WaitNextEvent(-1, 60)
  100.         if ok:
  101.             print 'Event:', e
  102.             if e[0] == 23: # kHighLevelEvent
  103.                 AE.AEProcessAppleEvent(e)
  104.             elif e[0] == keyDown and chr(e[1]&0xff) == '.' and e[4]&cmdKey:
  105.                 raise KeyboardInterrupt, "Command-Period"
  106.             else:
  107.                 MacOS.HandleEvent(e)
  108.  
  109. if __name__ == '__main__':
  110.     main()
  111.  
  112. print "This module is obsolete -- use echo.py or tell.py ..."
  113.